package com.hl.ruoyicsmshop.service;

import com.ruoyi.common.core.web.domain.AjaxResult;

/**
 * 客服服务接口
 * 
 * @author hl
 * @date 2024-01-01
 */
public interface ICustomerServiceService {
    
    /**
     * 创建客服会话
     * 
     * @param userId 用户ID
     * @param userInfo 用户信息
     * @return 会话信息
     */
    AjaxResult createSession(Long userId, Object userInfo);
    
    /**
     * 发送消息
     * 
     * @param sessionId 会话ID
     * @param content 消息内容
     * @param messageType 消息类型
     * @param userId 用户ID
     * @return 发送结果
     */
    AjaxResult sendMessage(String sessionId, String content, String messageType, Long userId);
    
    /**
     * 获取历史消息
     * 
     * @param sessionId 会话ID
     * @param page 页码
     * @param pageSize 每页大小
     * @return 消息列表
     */
    AjaxResult getHistoryMessages(String sessionId, int page, int pageSize);
    
    /**
     * 检查在线状态
     * 
     * @return 在线状态
     */
    AjaxResult checkOnlineStatus();
    
    /**
     * 上传图片
     * 
     * @param sessionId 会话ID
     * @param fileData 文件数据
     * @param fileName 文件名
     * @param userId 用户ID
     * @return 上传结果
     */
    AjaxResult uploadImage(String sessionId, byte[] fileData, String fileName, Long userId);
    
    /**
     * 关闭会话
     * 
     * @param sessionId 会话ID
     * @return 关闭结果
     */
    AjaxResult closeSession(String sessionId);
    
    /**
     * 获取会话信息
     * 
     * @param sessionId 会话ID
     * @return 会话信息
     */
    AjaxResult getSessionInfo(String sessionId);
    
    /**
     * 获取用户活跃会话
     * 
     * @param userId 用户ID
     * @return 会话信息
     */
    AjaxResult getActiveSession(Long userId);
    
    /**
     * 标记消息为已读
     * 
     * @param messageId 消息ID
     * @return 操作结果
     */
    AjaxResult markMessageAsRead(String messageId);
}
